/**
 * Created with IntelliJ IDEA.
 * Description:
 * User: 23735
 * Date: 2022-12-21
 * Time: 18:32
 */
public class Solution {
    //结果等于该位置的元素的前缀之积  ×  后缀之积
    //获得前缀之积和后缀之积就用DP
    public int[] productExceptSelf(int[] nums) {
        int length=nums.length;
        int[] answer=new int[length];
        //先记录前缀之积
        answer[0]=1;
        for(int i=1;i<length;i++){
            answer[i]=answer[i-1]*nums[i-1];
        }
        //记录后缀之积,同时前缀之积和后缀之积相乘
        //这里的后缀之积用一个变量存储,而不是直接乘上去,因为容易出错
        int right=1;
        for(int i=length-2;i>=0;i--){
            right*=nums[i+1];
            answer[i]=answer[i]*right;
        }
        return answer;
    }
}
